home *** CD-ROM | disk | FTP | other *** search
/ Java Primer Plus / Java Primer Plus (Waite Group Proess)(1996).iso / chapter14 / trouble.java < prev    next >
Text File  |  1995-12-31  |  982b  |  58 lines

  1. /* critical section example */
  2. class trouble extends Thread {
  3.  
  4.     static int p;
  5.     static guard theguard = new guard();
  6.     int myval;
  7.     boolean flag=true;
  8.     
  9.     public trouble(int x) {myval = x;}
  10.  
  11.     public void run() {
  12.       while (true) 
  13.        messp2();
  14.        }
  15.  
  16.     /* just add 2 */
  17.     synchronized private void messp() {
  18.       p = myval;
  19.       p = p + 2;
  20.       System.out.print(p);
  21.       }
  22.  
  23.     /* add two, protected by a guard */
  24.     private void messp2() {
  25.     int pvar;
  26.     synchronized (theguard) {
  27.       p = myval;
  28.       p = p + 2;
  29.       theguard.c = pvar = p;
  30.     }
  31.       System.out.print(pvar);
  32.       }
  33.         }
  34.  
  35. /* guard class */
  36. class guard {
  37.     public int c;
  38.     }
  39.  
  40. /* runner class */
  41. class runtrouble {
  42.     
  43.     public static void main (String args[]) {
  44.     
  45.       trouble A = new trouble(5);
  46.       trouble B = new trouble(6);
  47.     
  48.       int mypri = A.getPriority();
  49.       if (mypri < Thread.MAX_PRIORITY)
  50.         A.setPriority(mypri+1);
  51.         
  52.       A.start();
  53.       A.suspend();
  54.       B.start();
  55.       A.resume();
  56.      }
  57.     }
  58.